package interview.sort;

import com.study.interfaces.IArraySort;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import static com.study.util.LogUtil.info;
import static com.study.util.SwapUtil.swap;

/**
 * 2. 选择排序
 * <p>
 * 首先在未排序序列中找到最小（大）元素，存放到排序序列的起始位置
 * 再从剩余未排序元素中继续寻找最小（大）元素，然后放到已排序序列的末尾。
 * 重复第二步，直到所有元素均排序完毕。
 */
@Slf4j
@SuppressWarnings("all")
public class SelectionSort implements IArraySort {

    @Override
    public int[] sort(int[] arr) {
        // 190510 看答案做出来的
        // 190527 看答案做出来的 两遍
        return arr;
    }

    @Test
    public void test() {
        info(sort(new int[]{1, 5, 3, 2, 4}));
    }
}












































/*
@Override
public int[] sort(int[] arr) {

    // 总共要经过 N-1 轮比较
    for (int i = 0; i < arr.length - 1; i++) {
        int min = i;

        // 每轮需要比较的次数 N-i
        for (int j = i + 1; j < arr.length; j++) {

            // 记录目前能找到的最小值元素的下标
            if (arr[j] < arr[min])
                min = j;
        }

        // 将找到的最小值和i位置所在的值进行交换
        if (i != min) {
            swap(arr, i, min);
        }
    }
    return arr;
}
*/
